<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    /*
    先将 num 转为数组 arr 然后将 arr 拷贝为 temp 数组并对其排序 对比 arr 和 temp 
    数组中不同的第一个数字 找到之后再在 arr 中找到这个数字的位置，然后交换它们 
    最后将 arr 转为数字即可
    */
    const maximumSwap = function (num) {
      const arr = String(num).split('')
      const temp = arr.slice().sort((a, b) => b - a)
      let flag = -1
      for (let i = 0; i < arr.length; i++) {
        if (arr[i] < temp[i]) {
          flag = i
          break
        }
      }
      if (flag < 0) {
        return num
      }
      for (let i = arr.length - 1; i > flag; i--) {
        if (arr[i] === temp[flag]) {
          [arr[i], arr[flag]] = [arr[flag], arr[i]]
          break
        }
      }
      return parseInt(arr.join(''))
    }
    console.log(maximumSwap(2736))
  </script>
</body>

</html>